Convolution encoding at the transmitter (Tx) side and Viterbi Decoding at the receiver (Rx) side is a very commonly used technique for reliable data communication in many applications such as radio, mobile communication, satellite communication etc. Performing Viterbi decoding in software demands very high instruction processing rates from the processor. Hardware support for fast Viterbi decoding is often found in Digital Signal Processors (DSPs).
The Viterbi algorithm is a dynamic programming algorithm for finding the most likely sequence of hidden states, called the Viterbi path, that results in a sequence of observed events, especially in the context of Markov information sources and hidden Markov models.
The Viterbi algorithm was proposed by Andrew Viterbi in 1967 as a decoding algorithm for convolutional codes over noisy digital communication links. The algorithm has found universal application in decoding the convolutional codes used in both CDMA and GSM digital cellular, dial-up modems, satellite, deep-space communications, and 802.11 wireless LANs. It is now also commonly used in speech recognition, keyword spotting, computational linguistics, and bioinformatics.
Viterbi decoding may be done by executing a software program on a processor using the general instruction set of the processor. Since the decoding process is computationally intense, this may take a significant amount of instruction processing on the processor.
Dedicated Viterbi decoders may be used for Viterbi decoding. Typically, once configured by a processor, the dedicated Viterbi decoder performs the complete Viterbi decoding and provides an indication to the processor, such as interrupt, at the end of the decoding process. These solutions are hardware intensive in terms of gate count and area.
Other features of the present embodiments will be apparent from the accompanying drawings and from the detailed description that follows.